package weaver.limitCurrent;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5 {
  private static final String[] hexDigits = new String[] { 
      "0", "1", "2", "3", "4", "5", "6", "7", 
      "8", "9", 
      "a", "b", "c", "d", "e", "f" };
  
  private static MessageDigest md = null;
  
  static {
    try {
      md = MessageDigest.getInstance("MD5");
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    } 
  }
  
  public static String byteArrayToHexString(byte[] b) {
    StringBuffer resultSb = new StringBuffer();
    for (int i = 0; i < b.length; i++)
      resultSb.append(byteToHexString(b[i])); 
    return resultSb.toString();
  }
  
  private static String byteToHexString(byte b) {
    int n = b;
    if (n < 0)
      n += 256; 
    int d1 = n / 16;
    int d2 = n % 16;
    return String.valueOf(hexDigits[d1]) + hexDigits[d2];
  }
  
  public static String MD5Encode(String origin) {
    String resultString = null;
    try {
      resultString = byteArrayToHexString(md.digest(origin.getBytes()));
    } catch (Exception ex) {
      ex.printStackTrace();
    } 
    return resultString;
  }
  
  public static void main(String[] args) {
    System.err.println(MD5Encode("9000080206101213424758370890000890000228220a8889999e1abc906ba844a63"));
  }
}
